Reliability of storage systems such as NAND flash memories may decline as higher storage density is achieved with multi-level cell (MLC)/triple-level cell (TLC) technology. Error correcting codes (ECC) can be used in storage systems to detect and/or correct errors in the data and increase performance and efficiency of these systems. Several classes of ECC codes exist in the art, such as Bose-Chaudhuri-Hocquenghem (BCH) codes, low density parity check codes (LDPC), turbo product codes (TPC) and the like.
Soft decoding algorithms for ECC usually have higher performance compared to hard-decoding algorithms. However, hardware complexity of soft decoders is usually much higher than hardware complexity of hard decoding ECC decoders. There is a need in the art for efficient low complexity soft decoders for decoding ECC codes.